今天我們將進入到Esp32結合Line的推播服務(開始變得有趣起來了呢!)相信這應該也是大部份小夥伴期待已久的系列內容吧?! 這篇會使用到Esp32s的STA模式,那在前幾張說過,此次會見證到STA的真正功能,那就繼續往下看,因為此次還需要使用到Line的服務,所以準備事情較多,那就廢話不多說,往主題Let's Go~
※本章節需使用到Line帳號。
- 調整Arduino IDE中Esp32的版本
- 下載Line Notify函式庫
- 登入Line Notify取得Token
第1點,降Esp32版本可至開發板管理員輸入Esp32,調整Esp32的版本,請將版本調整至1.0.3。(如不懂可至「Day4 Arduino測試燒錄」,當中就有介紹如何選擇指定版本)
圖片取自:使用者拍攝
第2點,取得Line Notify函式庫,可至Arduino IDE的程式庫管理員打上Line Notify安裝。(如不懂可至「程式碼講解Part-2」,當中有提提到如何安裝函式庫)
圖片取自:使用者拍攝
第3點,登入Line Notify取得Token
請先打開瀏覽器,並搜尋Line Notify,進入頁面後點擊登入。
圖片取自:Line Notify
登入後,點擊相同地方,選擇個人頁面
圖片取自:Line Notify
點擊發行權杖
圖片取自:Line Notify
當出現這畫面時,就是開始申請權杖(Token),所以請先輸入名稱,及選擇透過1對1聊天接收Line Notify的通知,都選擇好後點擊發行
圖片取自:Line Notify
發行後,會看到這樣一條序號,這序號就是你的權杖(Token),請先把這權杖複製起來,等等會使用到
※這邊要注意,該權杖只會顯示這次,所以請先把這權杖記錄起來,盡量複製起來貼上記事本上
圖片取自:Line Notify
申請完權杖後,會看見多了一條,那就代表成功囉,那右方解除就是當你不想使用時就可解除。
圖片取自:Line Notify
圖片取自:使用者繪製
- Esp32s GND -> St01(C) -
- Esp32s Vcc(5V) -> St01(C) +
- Esp32s 22 -> St01(C) SCL
- Esp32s 21 -> St01(C) SDA
需更改ssid及password的數值,還有LINE_TOKEN中的數值(貼上剛才申請的LINE權杖),都設定好後就可燒錄。
#include <WiFi.h>
#include <WiFiClient.h>
#include <TridentTD_LineNotify.h>
#include <AHT10.h>
#include <Wire.h>
uint8_t readStatus = 0;
AHT10 myAHT10(AHT10_ADDRESS_0X38);
// 修改成上述寄到登入郵箱的 Token權杖號碼
#define LINE_TOKEN "jYTanwRtmAwnwevAWbBhU35RKhEq2OXAxxxxxxxxxxx"
// 設定無線基地台SSID跟密碼
const char* ssid = "xxxx";
const char* password = "xxxxxxxx";
float humidity, temp_f; // 從 AHT10 讀取的值
unsigned long previousMillis = 0; // will store last temp was read
const long interval = 2000; // interval at which to read sensor
// 用不到以下兩個變數
// const char* host = "notify-api.line.me";
// const int httpsPort = 443;
void setup(void)
{
Serial.begin(115200); // 設定速率 感測器
myAHT10.begin(); // 初始化
WiFi.mode(WIFI_STA);
// 連接無線基地台
WiFi.begin(ssid, password);
Serial.print("\n\r \n\rWorking to connect");
// 等待連線,並從 Console顯示 IP
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("DHT Weather Reading Server");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop(void)
{
// 量測間等待至少 2 秒
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
// 將最後讀取感測值的時間紀錄下來
previousMillis = currentMillis;
// 讀取溫度大約 250 微秒!
humidity = myAHT10.readHumidity(); // 讀取濕度(百分比)
delay(100);
temp_f = myAHT10.readTemperature(); // 讀取溫度(華氏)
delay(100);
// 檢查兩個值是否為空值
if (isnan(humidity) || isnan(temp_f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
}
String tempe="溫度:"+String(temp_f)+"℃";
String humid="濕度:"+String(humidity)+"%";
// 顯示 Line版本
Serial.println(LINE.getVersion());
LINE.setToken(LINE_TOKEN);
// 先換行再顯示
LINE.notify("\n" + tempe + " ;" + humid);
// 每2分鐘發送一次(delay120000)
delay(10000);
}
如果上述都完成且正確,那就會開始收到Line Notify所傳輸的數值,那跟之前一樣可以嘗試觸碰AHT10查看數值變化狀態。
圖片取自:使用者拍攝
好了,今天介紹了使用Esp32s的STA mode 加上 AHT10 並透過LINE Notify的服務,達到可以傳送溫溼度數值到手機上,不知大家這種傳輸有沒有興趣,除連自己手機外,也可以將這作品放在家中,並連接家中的WiFi分享器,就可以時刻接受到家中溫濕度,希望大家看完這篇會有收穫,那就明天見囉。
我用ESP32,都無法成功的發送訊息.
@goodnight 檢查一下ESP32開發板版本是否為1.0.3,過高版本會有資料傳輸的問題。